home *** CD-ROM | disk | FTP | other *** search
/ MacAddict 108 / MacAddict108.iso / Software / Internet & Communication / WordPress 1.5.1.dmg / wordpress / wp-admin / install-helper.php < prev    next >
Encoding:
PHP Script  |  2004-06-16  |  4.4 KB  |  152 lines

  1. <?php
  2. require_once('../wp-config.php');
  3. $debug = 0;
  4.  
  5. /**
  6.  ** maybe_create_table()
  7.  ** Create db table if it doesn't exist.
  8.  ** Returns:  true if already exists or on successful completion
  9.  **           false on error
  10.  */
  11. function maybe_create_table($table_name, $create_ddl) {
  12.     global $wpdb;
  13.     foreach ($wpdb->get_col("SHOW TABLES",0) as $table ) {
  14.         if ($table == $table_name) {
  15.             return true;
  16.         }
  17.     }
  18.     //didn't find it try to create it.
  19.     $q = $wpdb->query($create_ddl);
  20.     // we cannot directly tell that whether this succeeded!
  21.     foreach ($wpdb->get_col("SHOW TABLES",0) as $table ) {
  22.         if ($table == $table_name) {
  23.             return true;
  24.         }
  25.     }
  26.     return false;
  27. }
  28.  
  29. /**
  30.  ** maybe_add_column()
  31.  ** Add column to db table if it doesn't exist.
  32.  ** Returns:  true if already exists or on successful completion
  33.  **           false on error
  34.  */
  35. function maybe_add_column($table_name, $column_name, $create_ddl) {
  36.     global $wpdb, $debug;
  37.     foreach ($wpdb->get_col("DESC $table_name",0) as $column ) {
  38.         if ($debug) echo("checking $column == $column_name<br />");
  39.         if ($column == $column_name) {
  40.             return true;
  41.         }
  42.     }
  43.     //didn't find it try to create it.
  44.     $q = $wpdb->query($create_ddl);
  45.     // we cannot directly tell that whether this succeeded!
  46.     foreach ($wpdb->get_col("DESC $table_name",0) as $column ) {
  47.         if ($column == $column_name) {
  48.             return true;
  49.         }
  50.     }
  51.     return false;
  52. }
  53.  
  54.  
  55. /**
  56.  ** maybe_drop_column()
  57.  ** Drop column from db table if it exists.
  58.  ** Returns:  true if it doesn't already exist or on successful drop
  59.  **           false on error
  60.  */
  61. function maybe_drop_column($table_name, $column_name, $drop_ddl) {
  62.     global $wpdb;
  63.     foreach ($wpdb->get_col("DESC $table_name",0) as $column ) {
  64.         if ($column == $column_name) {
  65.             //found it try to drop it.
  66.             $q = $wpdb->query($drop_ddl);
  67.             // we cannot directly tell that whether this succeeded!
  68.             foreach ($wpdb->get_col("DESC $table_name",0) as $column ) {
  69.                 if ($column == $column_name) {
  70.                     return false;
  71.                 }
  72.             }
  73.         }
  74.     }
  75.     // else didn't find it
  76.     return true;
  77. }
  78.  
  79.  
  80. /**
  81.  ** check_column()
  82.  ** Check column matches passed in criteria.
  83.  ** Pass in null to skip checking that criteria
  84.  ** Returns:  true if it matches
  85.  **           false otherwise
  86.  ** (case sensitive) Column names returned from DESC table are:
  87.  **      Field
  88.  **      Type
  89.  **      Null
  90.  **      Key
  91.  **      Default
  92.  **      Extra
  93.  */
  94. function check_column($table_name, $col_name, $col_type, $is_null = null, $key = null, $default = null, $extra = null) {
  95.     global $wpdb, $debug;
  96.     $diffs = 0;
  97.     $results = $wpdb->get_results("DESC $table_name");
  98.     
  99.     foreach ($results as $row ) {
  100.         if ($debug > 1) print_r($row);
  101.         if ($row->Field == $col_name) {
  102.             // got our column, check the params
  103.             if ($debug) echo ("checking $row->Type against $col_type\n");
  104.             if (($col_type != null) && ($row->Type != $col_type)) {
  105.                 ++$diffs;
  106.             }
  107.             if (($is_null != null) && ($row->Null != $is_null)) {
  108.                 ++$diffs;
  109.             }
  110.             if (($key != null) && ($row->Key  != $key)) {
  111.                 ++$diffs;
  112.             }
  113.             if (($default != null) && ($row->Default != $default)) {
  114.                 ++$diffs;
  115.             }
  116.             if (($extra != null) && ($row->Extra != $extra)) {
  117.                 ++$diffs;
  118.             }
  119.             if ($diffs > 0) {
  120.                 if ($debug) echo ("diffs = $diffs returning false\n");
  121.                 return false;
  122.             }
  123.             return true;
  124.         } // end if found our column
  125.     }
  126.     return false;
  127. }
  128.     
  129. /*
  130. echo "<p>testing</p>";
  131. echo "<pre>";
  132.  
  133. //check_column('wp_links', 'link_description', 'mediumtext'); 
  134. //if (check_column($wpdb->comments, 'comment_author', 'tinytext'))
  135. //    echo "ok\n";
  136. $error_count = 0;
  137. $tablename = $wpdb->links;
  138. // check the column
  139. if (!check_column($wpdb->links, 'link_description', 'varchar(255)'))
  140. {
  141.     $ddl = "ALTER TABLE $wpdb->links MODIFY COLUMN link_description varchar(255) NOT NULL DEFAULT '' ";
  142.     $q = $wpdb->query($ddl);
  143. }
  144. if (check_column($wpdb->links, 'link_description', 'varchar(255)')) {
  145.     $res .= $tablename . ' - ok <br />';
  146. } else {
  147.     $res .= 'There was a problem with ' . $tablename . '<br />';
  148.     ++$error_count;
  149. }
  150. echo "</pre>";
  151. */
  152. ?>